package person

import (
	"crypto/md5"
	"encoding/hex"
	"fmt"
	"kaoqin/db"
)

type Classmates struct {
	Name string
	Sn   string
	Pswd string

	Sex string
	// 钱包
	Account float32
}

func (p *Classmates) TableName() string {

	return "classmates"
}

// 注册
func (p *Classmates) Register() bool {

	return true
}

// 1. 结构体的方法的编写
// 2. 结构体方法的调用

// 登录
func (p *Classmates) Login() bool {
	fmt.Println("请输入你的学号")
	var sn string
	fmt.Scanln(&sn)
	var pswd string
	fmt.Println("请输入你的密码")
	fmt.Scanln(&pswd)
	//从数据库里 获取真实的用户名和密码进行判断
	// 如果用户名和密码都对，那么返回true

	db.DB.Raw("SELECT * FROM chuanyou.classmates where sn=?", sn).Scan(p)
	fmt.Println(" 查询出的用户密码是：", p.Pswd)

	jiami := md5.New()
	jiami.Write([]byte(pswd))
	pswd = hex.EncodeToString(jiami.Sum(nil))
	fmt.Println(" 我自己输入的密码是：", pswd)
	if p.Pswd == pswd {
		return true
	}
	// 否则，返回false

	return false
}

// 吃饭
func (p *Classmates) Chifan() bool {

	return true
}

// 充值
func (p *Classmates) Chongzhi() {
	var edu float32
	fmt.Println("请输入充值的额度,目前额度是:", p.Account)
	fmt.Scanln(&edu)
	p.Account = p.Account + edu
	db.DB.Exec("update chuanyou.classmates set account=? where sn=?", p.Account, p.Sn)
	fmt.Println("充值成功,现在额度是:", p.Account)
}

// 吃饭
func ChaXunGirl() bool {
	var girls []*Classmates
	db.DB.Raw("select * from chuanyou.classmates where sex='女'").Scan(&girls)
	for _, v := range girls {
		fmt.Println(v.Name, v.Pswd, v.Sex)
	}
	return true
}

func ModifyPswd(sn string) bool {

	fmt.Println("请输入自己的新密码")
	var pswd string
	fmt.Scanln(&pswd)

	jiami := md5.New()
	jiami.Write([]byte(pswd))
	pswd = hex.EncodeToString(jiami.Sum(nil))

	db.DB.Exec("update chuanyou.classmates set pswd=? where sn=?", pswd, sn)

	return true
}

func SuperModifyPswd() bool {

	fmt.Println("请输入你要改的人的学号")
	var sn string
	fmt.Scanln(&sn)

	fmt.Println("请输入自己的新密码")
	var pswd string
	fmt.Scanln(&pswd)

	jiami := md5.New()
	jiami.Write([]byte(pswd))
	pswd = hex.EncodeToString(jiami.Sum(nil))

	db.DB.Exec("update chuanyou.classmates set pswd=? where sn=?", pswd, sn)

	return true
}

// 删除学生信息
func ZhuxiaoXuesheng() bool {
	var temp []*Classmates
	db.DB.Raw("select name,sn,sex from chuanyou.classmates limit 50").Scan(&temp)
	for _, v := range temp {
		fmt.Println(v.Name, "学号是:", v.Sn)
	}
	fmt.Println("请输入你要删除的学生的学号")
	var sn string
	fmt.Scanln(&sn)

	db.DB.Exec("delete from chuanyou.classmates where sn=?", sn)

	db.DB.Raw("select name,sn,sex from chuanyou.classmates limit 50").Scan(&temp)

	fmt.Println("删除成功，新的数据是:")
	for _, v := range temp {
		fmt.Println(v.Name, "学号是:", v.Sn)
	}
	return true

}

// 添加学生
func AddClassmates() {
	var student Classmates
	fmt.Println("请输入新学生姓名")
	fmt.Scanln(&student.Name)
	fmt.Println("请输入新学生学号")
	fmt.Scanln(&student.Sn)
	fmt.Println("请输入新学生性别")
	fmt.Scanln(&student.Sex)
	fmt.Println("请输入新学生密码")
	fmt.Scanln(&student.Pswd)
	jiami := md5.New()
	jiami.Write([]byte(student.Pswd))
	student.Pswd = hex.EncodeToString(jiami.Sum(nil))

	db.DB.Create(&student)
	fmt.Println("添加学生成功")
}

